﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace Teenus {
    [DataContract]
    public class EntityPorts {

        private int ports_ID;
        [DataMember]
        public int Ports_ID {
            get { return ports_ID; }
            set { ports_ID = value; }
        }

        private String nimetus;
        [DataMember]
        public String Nimetus {
            get { return nimetus; }
            set { nimetus = value; }
        }

        private Boolean saadaval;
        [DataMember]
        public Boolean Saadaval {
            get { return saadaval; }
            set { saadaval = value; }
        }

        private double hind;
        [DataMember]
        public double Hind {
            get { return hind; }
            set { hind = value; }
        }

        private int valuuta_ID;
        [DataMember]
        public int Valuuta_ID {
            get { return valuuta_ID; }
            set { valuuta_ID = value; }
        }


        // override object.Equals
        public override bool Equals(object obj) {
            if (obj == null || GetType() != obj.GetType()) {
                return false;
            }
            if(this == obj) {
                return true;
            }

            EntityPorts p = (EntityPorts)obj;
            if (nimetus == null || p.nimetus == null) {
                if (!(nimetus == null && p.nimetus == null)) {
                    return false;
                }
            }
            else if (!nimetus.Equals(p.nimetus)) {
                return false;
            }

            if (ports_ID.Equals(p.ports_ID) && saadaval.Equals(p.saadaval) && hind.Equals(p.hind) && valuuta_ID.Equals(p.valuuta_ID)) { 
                return true;
            }
            else {
                return false;
            }
        }


        /// <summary>
        /// Võrdleb kõiki teisi välju peale ID
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool EqualsWithoutID(object obj) {
            if (obj == null || GetType() != obj.GetType()) {
                return false;
            }
            if (this == obj) {
                return true;
            }

            EntityPorts p = (EntityPorts)obj;
            if (nimetus == null || p.nimetus == null) {
                if (!(nimetus == null && p.nimetus == null)) {
                    return false;
                }
            }
            else if (!nimetus.Equals(p.nimetus)) {
                return false;
            }

            if (saadaval.Equals(p.saadaval) && hind.Equals(p.hind) && valuuta_ID.Equals(p.valuuta_ID)) {
                return true;
            }
            else {
                return false;
            }
        }


        // override object.GetHashCode
        public override int GetHashCode() {
            int hash = 23;
            hash = hash * 37 + ports_ID;
            hash = hash * 37 + valuuta_ID;
            hash = hash * 37 + (int)hind;
            hash = hash * 37 + saadaval.GetHashCode();
            if (nimetus != null) { 
                hash = hash * 37 + nimetus.GetHashCode();
            }

            return hash;
        }

    }   //END class
}       //END namespace
